// 上面这个代码处理过度动画（默认加上不用管）
document.addEventListener('DOMContentLoaded', () => {
	setTimeout(() => {
		document.body.classList.add('sidenav-pinned');
		document.body.classList.add('ready');
	}, 200);
});

// 轻提示抽取
const myToast = new bootstrap.Toast(document.querySelector('#myToast'), {
	delay: 2000,
});
function tip(msg) {
	document.querySelector('#myToast .toast-body').innerHTML = msg;
	myToast.show();
}

// --------------设置基地址-----------------
axios.defaults.baseURL = 'http://ajax-api.itheima.net';

// --------------显示用户名-----------------
const username = localStorage.getItem('username');
const nameSpan = document.querySelector('#navbar-main-collapse .text-sm');
if (nameSpan) { // 此处也可以用逻辑短路
	nameSpan.innerHTML = username;
}

// ---------------用户登出------------------
const outBtn = document.querySelector('#logout');
// 逻辑短路
outBtn &&
	(outBtn.onclick = function () {
		localStorage.removeItem('username');
		localStorage.removeItem('token');
		window.location.assign('./login.html');
	});

// -------------请求拦截器------------------
// 添加请求拦截器
axios.interceptors.request.use(
	function (config) {
		// 在发送请求之前做些什么
		// 在拦截器里设置token
		config.headers.Authorization = localStorage.getItem('token');
		return config;
	},
	function (error) {
		// 对请求错误做些什么
		return Promise.reject(error);
	}
);

// -------------添加响应拦截器--------------
axios.interceptors.response.use(
	function (response) {
		// 2xx 范围内的状态码都会触发该函数。
		// 对响应数据做点什么
		return response.data;
	},
	function (error) {
		// 超出 2xx 范围的状态码都会触发该函数。
		// 对响应错误做点什么
		// 如果错误将token等信息清空
		if (error.response.status === 401) {
			localStorage.removeItem('username');
			localStorage.removeItem('token');
			window.location.assign('./login.html');
		}
		return Promise.reject(error);
	}
);
